<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Kinetis Bootloader: USB HID Peripheral</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="nxp_logo_small.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Kinetis Bootloader
   &#160;<span id="projectnumber">2.0.0</span>
   </div>
   <div id="projectbrief">Common bootloader for Kinetis devices</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Introduction</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li class="current"><a href="modules.html"><span>Modules</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__usb__hid__peripheral.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#enumval-members">Enumerator</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<div class="title">USB HID Peripheral<div class="ingroups"><a class="el" href="group__bootloader.html">Bootloader</a> &raquo; <a class="el" href="group__peripherals.html">Peripheral Definitions</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>USB HID peripheral interface.  
<a href="#details">More...</a></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Collaboration diagram for USB HID Peripheral:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<center><table><tr><td><div class="center"><iframe scrolling="no" frameborder="0" src="group__usb__hid__peripheral.svg" width="339" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</td></tr></table></center>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:structusb__hid__packetizer__info__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#structusb__hid__packetizer__info__t">usb_hid_packetizer_info_t</a></td></tr>
<tr class="memdesc:structusb__hid__packetizer__info__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">State information for the USB HID packetizer.  <a href="group__usb__hid__peripheral.html#structusb__hid__packetizer__info__t">More...</a><br /></td></tr>
<tr class="separator:structusb__hid__packetizer__info__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga385c44f6fb256e5716a2302a5b940388"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga385c44f6fb256e5716a2302a5b940388"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <br />
&#160;&#160;<b>kAppRequestParam_IdleRate</b> = 0, 
<br />
&#160;&#160;<b>kAppRequestParam_Protocol</b>, 
<br />
&#160;&#160;<b>kAppRequestParamCount</b>
<br />
 }<tr class="memdesc:ga385c44f6fb256e5716a2302a5b940388"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request parameters. <br /></td></tr>
</td></tr>
<tr class="separator:ga385c44f6fb256e5716a2302a5b940388"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabc5c98fcc1211af2b80116dd6e0a035d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gabc5c98fcc1211af2b80116dd6e0a035d"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <br />
&#160;&#160;<b>kAppRequestParam_IdleRate</b> = 0, 
<br />
&#160;&#160;<b>kAppRequestParam_Protocol</b>, 
<br />
&#160;&#160;<b>kAppRequestParamCount</b>
<br />
 }<tr class="memdesc:gabc5c98fcc1211af2b80116dd6e0a035d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request parameters. <br /></td></tr>
</td></tr>
<tr class="separator:gabc5c98fcc1211af2b80116dd6e0a035d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga04488c240d229556cc4304f5ebcb5da1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga04488c240d229556cc4304f5ebcb5da1"></a>
static bool&#160;</td><td class="memItemRight" valign="bottom"><b>usb_hid_poll_for_activity</b> (const peripheral_descriptor_t *self)</td></tr>
<tr class="separator:ga04488c240d229556cc4304f5ebcb5da1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2423975758569583d385350c9287bd71"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2423975758569583d385350c9287bd71"></a>
static <a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>usb_device_full_init</b> (const peripheral_descriptor_t *self, serial_byte_receive_func_t function)</td></tr>
<tr class="separator:ga2423975758569583d385350c9287bd71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1764f0df8bee1660b5523883bc2400de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1764f0df8bee1660b5523883bc2400de"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>usb_device_full_shutdown</b> (const peripheral_descriptor_t *self)</td></tr>
<tr class="separator:ga1764f0df8bee1660b5523883bc2400de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0d44662c30e903e091f635d97921af38"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#ga0d44662c30e903e091f635d97921af38">usb_msc_pump</a> (const peripheral_descriptor_t *self)</td></tr>
<tr class="memdesc:ga0d44662c30e903e091f635d97921af38"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run the sbloader state machine.  <a href="#ga0d44662c30e903e091f635d97921af38">More...</a><br /></td></tr>
<tr class="separator:ga0d44662c30e903e091f635d97921af38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae67365f8696fbbe1ad77f14c58629138"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae67365f8696fbbe1ad77f14c58629138"></a>
static <a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>usb_hid_packet_init</b> (const peripheral_descriptor_t *self)</td></tr>
<tr class="separator:gae67365f8696fbbe1ad77f14c58629138"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4cc546107d86101daca4ed8ff563f1ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4cc546107d86101daca4ed8ff563f1ca"></a>
static <a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>usb_hid_packet_read</b> (const peripheral_descriptor_t *self, uint8_t **packet, uint32_t *packetLength, <a class="el" href="group__peripheral.html#ga864fc0d1fbad74e37628f58051c8e3f7">packet_type_t</a> packetType)</td></tr>
<tr class="separator:ga4cc546107d86101daca4ed8ff563f1ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9f60b20a45fecb723c9756f31a0a6632"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9f60b20a45fecb723c9756f31a0a6632"></a>
static <a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>usb_hid_packet_write</b> (const peripheral_descriptor_t *self, const uint8_t *packet, uint32_t byteCount, <a class="el" href="group__peripheral.html#ga864fc0d1fbad74e37628f58051c8e3f7">packet_type_t</a> packetType)</td></tr>
<tr class="separator:ga9f60b20a45fecb723c9756f31a0a6632"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8bdcde3ed676646956d93c1b0ca9e1ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8bdcde3ed676646956d93c1b0ca9e1ac"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>usb_hid_packet_abort_data_phase</b> (const peripheral_descriptor_t *self)</td></tr>
<tr class="separator:ga8bdcde3ed676646956d93c1b0ca9e1ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabe4dbe7d8cee843a8ca9229a25e183f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gabe4dbe7d8cee843a8ca9229a25e183f4"></a>
static <a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>usb_hid_packet_finalize</b> (const peripheral_descriptor_t *self)</td></tr>
<tr class="separator:gabe4dbe7d8cee843a8ca9229a25e183f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabf76b2c2ffaa01ab6b45ec7ec6b5383f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gabf76b2c2ffaa01ab6b45ec7ec6b5383f"></a>
static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>usb_hid_packet_get_max_packet_size</b> (const peripheral_descriptor_t *self)</td></tr>
<tr class="separator:gabf76b2c2ffaa01ab6b45ec7ec6b5383f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa92dbdaa6e07d43de27283ecaff52243"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa92dbdaa6e07d43de27283ecaff52243"></a>
usb_status_t&#160;</td><td class="memItemRight" valign="bottom"><b>usb_device_callback</b> (usb_device_handle handle, uint32_t event, void *param)</td></tr>
<tr class="separator:gaa92dbdaa6e07d43de27283ecaff52243"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad6b69270073a9d920464224ffa89fc4e"><td class="memItemLeft" align="right" valign="top">usb_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#gad6b69270073a9d920464224ffa89fc4e">usb_device_msc_callback</a> (class_handle_t handle, uint32_t event, void *param)</td></tr>
<tr class="memdesc:gad6b69270073a9d920464224ffa89fc4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">device msc callback function.  <a href="#gad6b69270073a9d920464224ffa89fc4e">More...</a><br /></td></tr>
<tr class="separator:gad6b69270073a9d920464224ffa89fc4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga68b57496334003a92dc5340a5c78ba17"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga68b57496334003a92dc5340a5c78ba17"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>USBHS_IRQHandler</b> (void)</td></tr>
<tr class="separator:ga68b57496334003a92dc5340a5c78ba17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabc5de4ad49b6c8340493e94e0d1f0d69"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gabc5de4ad49b6c8340493e94e0d1f0d69"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>USB0_IRQHandler</b> (void)</td></tr>
<tr class="separator:gabc5de4ad49b6c8340493e94e0d1f0d69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa2e94630df61063ff530b789b789af36"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#gaa2e94630df61063ff530b789b789af36">usb_hid_app_callback</a> (uint8_t controller_ID, uint8_t event_type, void *val)</td></tr>
<tr class="memdesc:gaa2e94630df61063ff530b789b789af36"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function handles the callback.  <a href="#gaa2e94630df61063ff530b789b789af36">More...</a><br /></td></tr>
<tr class="separator:gaa2e94630df61063ff530b789b789af36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gada65ada41100a1c851f74d77a25baa62"><td class="memItemLeft" align="right" valign="top">static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#gada65ada41100a1c851f74d77a25baa62">usb_hid_app_param_callback</a> (uint8_t request, uint16_t value, uint16_t wIndex, uint8_t **data, USB_PACKET_SIZE *size)</td></tr>
<tr class="memdesc:gada65ada41100a1c851f74d77a25baa62"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function handles callbacks for USB HID Class request.  <a href="#gada65ada41100a1c851f74d77a25baa62">More...</a><br /></td></tr>
<tr class="separator:gada65ada41100a1c851f74d77a25baa62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga65ed26e826d1cf6a6c903bea732fc2a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga65ed26e826d1cf6a6c903bea732fc2a2"></a>
static <a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>usb_hid_full_init</b> (const peripheral_descriptor_t *self, serial_byte_receive_func_t function)</td></tr>
<tr class="separator:ga65ed26e826d1cf6a6c903bea732fc2a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaadcd3ef8001c0ecd729d7821bfc899de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaadcd3ef8001c0ecd729d7821bfc899de"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>usb_hid_full_shutdown</b> (const peripheral_descriptor_t *self)</td></tr>
<tr class="separator:gaadcd3ef8001c0ecd729d7821bfc899de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacd1beb1ee6120a1cc605a1c8463bc73e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacd1beb1ee6120a1cc605a1c8463bc73e"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>usb_set_clock_gate</b> (uint32_t instance, <a class="el" href="group__peripherals.html#ga928b73558a924df37db05580d632e89b">PeripheralClockSetting</a> set)</td></tr>
<tr class="separator:gacd1beb1ee6120a1cc605a1c8463bc73e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga97d984d9042524c0478ad7c1c079bdc5"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#ga97d984d9042524c0478ad7c1c079bdc5">usb_hid_app_callback</a> (uint8_t event_type, void *val, void *arg)</td></tr>
<tr class="memdesc:ga97d984d9042524c0478ad7c1c079bdc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function handles the callback.  <a href="#ga97d984d9042524c0478ad7c1c079bdc5">More...</a><br /></td></tr>
<tr class="separator:ga97d984d9042524c0478ad7c1c079bdc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4e6ab39ac154c31b293a4cba5c443845"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4e6ab39ac154c31b293a4cba5c443845"></a>
static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>usb_hid_app_param_callback</b> (uint8_t request, uint16_t value, uint8_t **data, USB_PACKET_SIZE *size, void *arg)</td></tr>
<tr class="separator:ga4e6ab39ac154c31b293a4cba5c443845"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0d9fb5e15af2083f7705bd3674ce4893"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0d9fb5e15af2083f7705bd3674ce4893"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>usb_get_instance_via_ipsr</b> (void)</td></tr>
<tr class="separator:ga0d9fb5e15af2083f7705bd3674ce4893"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ga4d18c6b09d6f9061a827c063168cb022"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4d18c6b09d6f9061a827c063168cb022"></a>
static bool&#160;</td><td class="memItemRight" valign="bottom"><b>s_dHidMscActivity</b> [2] = { false }</td></tr>
<tr class="separator:ga4d18c6b09d6f9061a827c063168cb022"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga303f0b920c08f9ea830f14f81e86f8d1"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__peripheral.html#structperipheral__control__interface__t">peripheral_control_interface_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#ga303f0b920c08f9ea830f14f81e86f8d1">g_usbHidControlInterface</a></td></tr>
<tr class="memdesc:ga303f0b920c08f9ea830f14f81e86f8d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Control interface for the USB HID peripheral driver.  <a href="#ga303f0b920c08f9ea830f14f81e86f8d1">More...</a><br /></td></tr>
<tr class="separator:ga303f0b920c08f9ea830f14f81e86f8d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0bf9bad17f14d15d8ae92a239af9e470"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__peripheral.html#structperipheral__packet__interface__t">peripheral_packet_interface_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#ga0bf9bad17f14d15d8ae92a239af9e470">g_usbHidPacketInterface</a></td></tr>
<tr class="memdesc:ga0bf9bad17f14d15d8ae92a239af9e470"><td class="mdescLeft">&#160;</td><td class="mdescRight">Packet interface for the USB HID peripheral driver.  <a href="#ga0bf9bad17f14d15d8ae92a239af9e470">More...</a><br /></td></tr>
<tr class="separator:ga0bf9bad17f14d15d8ae92a239af9e470"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5de233bf58b2234e3742150459ed7a45"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5de233bf58b2234e3742150459ed7a45"></a>
static <a class="el" href="structusb__device__composite__struct__t.html">usb_device_composite_struct_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>g_device_composite</b></td></tr>
<tr class="separator:ga5de233bf58b2234e3742150459ed7a45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga303f0b920c08f9ea830f14f81e86f8d1"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__peripheral.html#structperipheral__control__interface__t">peripheral_control_interface_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#ga303f0b920c08f9ea830f14f81e86f8d1">g_usbHidControlInterface</a></td></tr>
<tr class="memdesc:ga303f0b920c08f9ea830f14f81e86f8d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Control interface for the USB HID peripheral driver.  <a href="#ga303f0b920c08f9ea830f14f81e86f8d1">More...</a><br /></td></tr>
<tr class="separator:ga303f0b920c08f9ea830f14f81e86f8d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0bf9bad17f14d15d8ae92a239af9e470"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__peripheral.html#structperipheral__packet__interface__t">peripheral_packet_interface_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#ga0bf9bad17f14d15d8ae92a239af9e470">g_usbHidPacketInterface</a></td></tr>
<tr class="memdesc:ga0bf9bad17f14d15d8ae92a239af9e470"><td class="mdescLeft">&#160;</td><td class="mdescRight">Packet interface for the USB HID peripheral driver.  <a href="#ga0bf9bad17f14d15d8ae92a239af9e470">More...</a><br /></td></tr>
<tr class="separator:ga0bf9bad17f14d15d8ae92a239af9e470"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga89436f5a952a1cfbdc54b5f09639021f"><td class="memItemLeft" align="right" valign="top">static const IRQn_Type&#160;</td><td class="memItemRight" valign="bottom"><b>usb_irq_ids</b> [USB_INSTANCE_COUNT]</td></tr>
<tr class="separator:ga89436f5a952a1cfbdc54b5f09639021f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6a6a0dc76f28cff5169d5faa1852caeb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6a6a0dc76f28cff5169d5faa1852caeb"></a>
static <a class="el" href="group__usb__hid__peripheral.html#structusb__hid__packetizer__info__t">usb_hid_packetizer_info_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#ga6a6a0dc76f28cff5169d5faa1852caeb">s_hidInfo</a></td></tr>
<tr class="memdesc:ga6a6a0dc76f28cff5169d5faa1852caeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Current state of the USB HID packetizer. <br /></td></tr>
<tr class="separator:ga6a6a0dc76f28cff5169d5faa1852caeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga76d246378c2796d71c91266aa710c6e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga76d246378c2796d71c91266aa710c6e8"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#ga76d246378c2796d71c91266aa710c6e8">isEnumerated</a></td></tr>
<tr class="memdesc:ga76d246378c2796d71c91266aa710c6e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether the device has enumerated and is configured. <br /></td></tr>
<tr class="separator:ga76d246378c2796d71c91266aa710c6e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacb308288f30cb8fcb4b9f42ad92d1674"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacb308288f30cb8fcb4b9f42ad92d1674"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#gacb308288f30cb8fcb4b9f42ad92d1674">didReceiveFirstReport</a></td></tr>
<tr class="memdesc:gacb308288f30cb8fcb4b9f42ad92d1674"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether the first report has been received. <br /></td></tr>
<tr class="separator:gacb308288f30cb8fcb4b9f42ad92d1674"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab9075e2d776867a3262b2213bf9b57c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab9075e2d776867a3262b2213bf9b57c6"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#gab9075e2d776867a3262b2213bf9b57c6">didReceiveDataPhaseAbort</a></td></tr>
<tr class="memdesc:gab9075e2d776867a3262b2213bf9b57c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether we received a data phase abort request. <br /></td></tr>
<tr class="separator:gab9075e2d776867a3262b2213bf9b57c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga90fff11d77e1f4428d91f9520aef1eaf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga90fff11d77e1f4428d91f9520aef1eaf"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#ga90fff11d77e1f4428d91f9520aef1eaf">isReceiveDataRequestRequired</a></td></tr>
<tr class="memdesc:ga90fff11d77e1f4428d91f9520aef1eaf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether an interrupt out pipe receive data request is required. <br /></td></tr>
<tr class="separator:ga90fff11d77e1f4428d91f9520aef1eaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaefb55494a863d9c0d1261723ede88724"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaefb55494a863d9c0d1261723ede88724"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#gaefb55494a863d9c0d1261723ede88724">appRequestParams</a> [kAppRequestParamCount]</td></tr>
<tr class="memdesc:gaefb55494a863d9c0d1261723ede88724"><td class="mdescLeft">&#160;</td><td class="mdescRight">Storage for request parameter values. <br /></td></tr>
<tr class="separator:gaefb55494a863d9c0d1261723ede88724"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9ddb8756e8240a3dc45a3ff82705448f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9ddb8756e8240a3dc45a3ff82705448f"></a>
<a class="el" href="group__rtos__irq__sync.html#gaf19667353d40403b33dfac84ba8a3678">sync_object_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#ga9ddb8756e8240a3dc45a3ff82705448f">receiveSync</a></td></tr>
<tr class="memdesc:ga9ddb8756e8240a3dc45a3ff82705448f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sync object used for reading packets. <br /></td></tr>
<tr class="separator:ga9ddb8756e8240a3dc45a3ff82705448f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga192f980c686204e2b82709247c63c2e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga192f980c686204e2b82709247c63c2e7"></a>
<a class="el" href="group__rtos__irq__sync.html#gaf19667353d40403b33dfac84ba8a3678">sync_object_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#ga192f980c686204e2b82709247c63c2e7">sendSync</a></td></tr>
<tr class="memdesc:ga192f980c686204e2b82709247c63c2e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sync object used for sending packets. <br /></td></tr>
<tr class="separator:ga192f980c686204e2b82709247c63c2e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0e3d112a693957fb2a6c40cf246237f5"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#ga0e3d112a693957fb2a6c40cf246237f5">reportSize</a></td></tr>
<tr class="separator:ga0e3d112a693957fb2a6c40cf246237f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab4b110c7ed6296be526d344757f5b6fe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structbl__hid__report__t.html">bl_hid_report_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#gab4b110c7ed6296be526d344757f5b6fe">report</a></td></tr>
<tr class="memdesc:gab4b110c7ed6296be526d344757f5b6fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">the report plus the header, as the host can send up to the max report size bytes.  <a href="#gab4b110c7ed6296be526d344757f5b6fe">More...</a><br /></td></tr>
<tr class="separator:gab4b110c7ed6296be526d344757f5b6fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga56efb18b0236e7149a6caf9096e23b28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga56efb18b0236e7149a6caf9096e23b28"></a>
hid_handle_t&#160;</td><td class="memItemRight" valign="bottom"><b>app_handle</b></td></tr>
<tr class="separator:ga56efb18b0236e7149a6caf9096e23b28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4a838146dbd44c5abfd7a515c6fbb3fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4a838146dbd44c5abfd7a515c6fbb3fe"></a>
usb_desc_request_notify_struct_t&#160;</td><td class="memItemRight" valign="bottom"><b>g_desc_callback</b></td></tr>
<tr class="separator:ga4a838146dbd44c5abfd7a515c6fbb3fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga303f0b920c08f9ea830f14f81e86f8d1"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__peripheral.html#structperipheral__control__interface__t">peripheral_control_interface_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#ga303f0b920c08f9ea830f14f81e86f8d1">g_usbHidControlInterface</a></td></tr>
<tr class="memdesc:ga303f0b920c08f9ea830f14f81e86f8d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Control interface for the USB HID peripheral driver.  <a href="#ga303f0b920c08f9ea830f14f81e86f8d1">More...</a><br /></td></tr>
<tr class="separator:ga303f0b920c08f9ea830f14f81e86f8d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0bf9bad17f14d15d8ae92a239af9e470"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__peripheral.html#structperipheral__packet__interface__t">peripheral_packet_interface_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#ga0bf9bad17f14d15d8ae92a239af9e470">g_usbHidPacketInterface</a></td></tr>
<tr class="memdesc:ga0bf9bad17f14d15d8ae92a239af9e470"><td class="mdescLeft">&#160;</td><td class="mdescRight">Packet interface for the USB HID peripheral driver.  <a href="#ga0bf9bad17f14d15d8ae92a239af9e470">More...</a><br /></td></tr>
<tr class="separator:ga0bf9bad17f14d15d8ae92a239af9e470"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9727067c3222372aff85c9778e8bf444"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9727067c3222372aff85c9778e8bf444"></a>
static <a class="el" href="group__usb__hid__peripheral.html#structusb__hid__packetizer__info__t">usb_hid_packetizer_info_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__usb__hid__peripheral.html#ga9727067c3222372aff85c9778e8bf444">s_hidInfo</a> [USB_INSTANCE_COUNT+USBHS_INSTANCE_COUNT]</td></tr>
<tr class="memdesc:ga9727067c3222372aff85c9778e8bf444"><td class="mdescLeft">&#160;</td><td class="mdescRight">Current state of the USB HID packetizer. <br /></td></tr>
<tr class="separator:ga9727067c3222372aff85c9778e8bf444"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
USB_Class_Periodic_Task</h2></td></tr>
<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp1fe1df63c3d90bcbf338286e81579b49"></a>The function calls for periodic tasks</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">None</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>None</dd></dl>
<p>Called to check for any pending requests </p>
</td></tr>
<tr class="memitem:gae9f05432007ec771ce868c79e5c07d67"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae9f05432007ec771ce868c79e5c07d67"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>usb_hid_Periodic_Task</b> (const peripheral_descriptor_t *self)</td></tr>
<tr class="separator:gae9f05432007ec771ce868c79e5c07d67"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Usage Information</h2>
<p>USB HID peripheral interface. </p>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="structusb__hid__packetizer__info__t" id="structusb__hid__packetizer__info__t"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct usb_hid_packetizer_info_t</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>State information for the USB HID packetizer. </p>
</div><div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-1-trigger" src="closed.png" alt="+"/> Collaboration diagram for usb_hid_packetizer_info_t:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="structusb__hid__packetizer__info__t__coll__graph.svg" width="146" height="231"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ga56efb18b0236e7149a6caf9096e23b28"></a>hid_handle_t</td>
<td class="fieldname">
app_handle</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="gaefb55494a863d9c0d1261723ede88724"></a>uint8_t</td>
<td class="fieldname">
appRequestParams[kAppRequestParamCount]</td>
<td class="fielddoc">
Storage for request parameter values. </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="gab9075e2d776867a3262b2213bf9b57c6"></a>bool</td>
<td class="fieldname">
didReceiveDataPhaseAbort</td>
<td class="fielddoc">
Whether we received a data phase abort request. </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="gacb308288f30cb8fcb4b9f42ad92d1674"></a>bool</td>
<td class="fieldname">
didReceiveFirstReport</td>
<td class="fielddoc">
Whether the first report has been received. </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ga76d246378c2796d71c91266aa710c6e8"></a>bool</td>
<td class="fieldname">
isEnumerated</td>
<td class="fielddoc">
Whether the device has enumerated and is configured. </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ga90fff11d77e1f4428d91f9520aef1eaf"></a>bool</td>
<td class="fieldname">
isReceiveDataRequestRequired</td>
<td class="fielddoc">
Whether an interrupt out pipe receive data request is required. </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ga9ddb8756e8240a3dc45a3ff82705448f"></a><a class="el" href="group__rtos__irq__sync.html#gaf19667353d40403b33dfac84ba8a3678">sync_object_t</a></td>
<td class="fieldname">
receiveSync</td>
<td class="fielddoc">
Sync object used for reading packets. </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="gab4b110c7ed6296be526d344757f5b6fe"></a><a class="el" href="structbl__hid__report__t.html">bl_hid_report_t</a></td>
<td class="fieldname">
report</td>
<td class="fielddoc">
the report plus the header, as the host can send up to the max report size bytes. <p>Buffer used to hold HID reports for sending and receiving. </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ga0e3d112a693957fb2a6c40cf246237f5"></a>uint32_t</td>
<td class="fieldname">
reportSize</td>
<td class="fielddoc">
<p>The size in bytes of a received report. May be greater than the packet contained within </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ga192f980c686204e2b82709247c63c2e7"></a><a class="el" href="group__rtos__irq__sync.html#gaf19667353d40403b33dfac84ba8a3678">sync_object_t</a></td>
<td class="fieldname">
sendSync</td>
<td class="fielddoc">
Sync object used for sending packets. </td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gad6b69270073a9d920464224ffa89fc4e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">usb_status_t usb_device_msc_callback </td>
          <td>(</td>
          <td class="paramtype">class_handle_t&#160;</td>
          <td class="paramname"><em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>param</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>device msc callback function. </p>
<p>This function handle the disk class specified event. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">handle</td><td>The USB class handle. </td></tr>
    <tr><td class="paramname">event</td><td>The USB device event type. </td></tr>
    <tr><td class="paramname">param</td><td>The parameter of the class specific event. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>kStatus_USB_Success or error. </dd></dl>
<p>&lt; Send data completed</p>
<p>&lt; Data received</p>
<p>&lt; Host write data</p>
<p>&lt; Host read data </p>

</div>
</div>
<a class="anchor" id="gaa2e94630df61063ff530b789b789af36"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void usb_hid_app_callback </td>
          <td>(</td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>controller_ID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>event_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This function handles the callback. </p>
<p>This function is called from the class layer whenever reset occurs or enum is complete. after the enum is complete this function sets a variable so that the application can start</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">controller_ID</td><td>Controller ID </td></tr>
    <tr><td class="paramname">event_type</td><td>value of the event </td></tr>
    <tr><td class="paramname">val</td><td>gives the configuration value </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga97d984d9042524c0478ad7c1c079bdc5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void usb_hid_app_callback </td>
          <td>(</td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>event_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>val</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>arg</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This function handles the callback. </p>
<p>This function is called from the class layer whenever reset occurs or enum is complete. after the enum is complete this function sets a variable so that the application can start</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">event_type</td><td>value of the event </td></tr>
    <tr><td class="paramname">val</td><td>gives the configuration value </td></tr>
    <tr><td class="paramname">arg</td><td></td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gada65ada41100a1c851f74d77a25baa62"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">uint8_t usb_hid_app_param_callback </td>
          <td>(</td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>request</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&#160;</td>
          <td class="paramname"><em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&#160;</td>
          <td class="paramname"><em>wIndex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t **&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">USB_PACKET_SIZE *&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This function handles callbacks for USB HID Class request. </p>
<p>This function is called whenever a HID class request is received. This function handles these class requests</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">request</td><td>request type </td></tr>
    <tr><td class="paramname">value</td><td>give report type and id </td></tr>
    <tr><td class="paramname">data</td><td>pointer to the data </td></tr>
    <tr><td class="paramname">size</td><td>size of the transfer</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status USB_OK : if successful else return error </dd></dl>

</div>
</div>
<a class="anchor" id="ga0d44662c30e903e091f635d97921af38"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void usb_msc_pump </td>
          <td>(</td>
          <td class="paramtype">const peripheral_descriptor_t *&#160;</td>
          <td class="paramname"><em>self</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Run the sbloader state machine. </p>
<p>This function is called repeatedly by the main application loop. We use it to run the sbloader state machine from non-interrupt context. </p>

</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="ga56efb18b0236e7149a6caf9096e23b28"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">hid_handle_t app_handle</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="gaefb55494a863d9c0d1261723ede88724"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint8_t appRequestParams</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Storage for request parameter values. </p>

</div>
</div>
<a class="anchor" id="gab9075e2d776867a3262b2213bf9b57c6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool didReceiveDataPhaseAbort</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Whether we received a data phase abort request. </p>

</div>
</div>
<a class="anchor" id="gacb308288f30cb8fcb4b9f42ad92d1674"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool didReceiveFirstReport</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Whether the first report has been received. </p>

</div>
</div>
<a class="anchor" id="ga303f0b920c08f9ea830f14f81e86f8d1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="group__peripheral.html#structperipheral__control__interface__t">peripheral_control_interface_t</a> g_usbHidControlInterface</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {.pollForActivity = usb_hid_poll_for_activity,</div><div class="line">                                                                 .init = usb_device_full_init,</div><div class="line">                                                                 .shutdown = usb_device_full_shutdown,</div><div class="line">                                                                 .pump = <a class="code" href="group__usb__hid__peripheral.html#ga0d44662c30e903e091f635d97921af38">usb_msc_pump</a> }</div><div class="ttc" id="group__usb__hid__peripheral_html_ga0d44662c30e903e091f635d97921af38"><div class="ttname"><a href="group__usb__hid__peripheral.html#ga0d44662c30e903e091f635d97921af38">usb_msc_pump</a></div><div class="ttdeci">static void usb_msc_pump(const peripheral_descriptor_t *self)</div><div class="ttdoc">Run the sbloader state machine. </div><div class="ttdef"><b>Definition:</b> usb_hid_msc_peripheral_interface.c:421</div></div>
</div><!-- fragment -->
<p>Control interface for the USB HID peripheral driver. </p>

</div>
</div>
<a class="anchor" id="ga303f0b920c08f9ea830f14f81e86f8d1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="group__peripheral.html#structperipheral__control__interface__t">peripheral_control_interface_t</a> g_usbHidControlInterface</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {.pollForActivity = usb_hid_poll_for_activity,</div><div class="line">                                                                 .init = usb_hid_full_init,</div><div class="line">                                                                 .shutdown = usb_hid_full_shutdown,</div><div class="line">                                                                 .pump = USB_Class_HID_Periodic_Task }</div></div><!-- fragment -->
<p>Control interface for the USB HID peripheral driver. </p>

</div>
</div>
<a class="anchor" id="ga303f0b920c08f9ea830f14f81e86f8d1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="group__peripheral.html#structperipheral__control__interface__t">peripheral_control_interface_t</a> g_usbHidControlInterface</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {.pollForActivity = usb_hid_poll_for_activity,</div><div class="line">                                                                 .init = usb_hid_full_init,</div><div class="line">                                                                 .shutdown = usb_hid_full_shutdown,</div><div class="line">                                                                 .pump = usb_hid_Periodic_Task }</div></div><!-- fragment -->
<p>Control interface for the USB HID peripheral driver. </p>

</div>
</div>
<a class="anchor" id="ga0bf9bad17f14d15d8ae92a239af9e470"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="group__peripheral.html#structperipheral__packet__interface__t">peripheral_packet_interface_t</a> g_usbHidPacketInterface</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {.init = usb_hid_packet_init,</div><div class="line">                                                               .readPacket = usb_hid_packet_read,</div><div class="line">                                                               .writePacket = usb_hid_packet_write,</div><div class="line">                                                               .abortDataPhase = usb_hid_packet_abort_data_phase,</div><div class="line">                                                               .finalize = usb_hid_packet_finalize,</div><div class="line">                                                               .getMaxPacketSize = usb_hid_packet_get_max_packet_size,</div><div class="line">                                                               .byteReceivedCallback = 0 }</div></div><!-- fragment -->
<p>Packet interface for the USB HID peripheral driver. </p>

</div>
</div>
<a class="anchor" id="ga0bf9bad17f14d15d8ae92a239af9e470"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="group__peripheral.html#structperipheral__packet__interface__t">peripheral_packet_interface_t</a> g_usbHidPacketInterface</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {.init = usb_hid_packet_init,</div><div class="line">                                                               .readPacket = usb_hid_packet_read,</div><div class="line">                                                               .writePacket = usb_hid_packet_write,</div><div class="line">                                                               .abortDataPhase = usb_hid_packet_abort_data_phase,</div><div class="line">                                                               .finalize = usb_hid_packet_finalize,</div><div class="line">                                                               .getMaxPacketSize = usb_hid_packet_get_max_packet_size,</div><div class="line">                                                               .byteReceivedCallback = 0 }</div></div><!-- fragment -->
<p>Packet interface for the USB HID peripheral driver. </p>

</div>
</div>
<a class="anchor" id="ga0bf9bad17f14d15d8ae92a239af9e470"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="group__peripheral.html#structperipheral__packet__interface__t">peripheral_packet_interface_t</a> g_usbHidPacketInterface</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {.init = usb_hid_packet_init,</div><div class="line">                                                               .readPacket = usb_hid_packet_read,</div><div class="line">                                                               .writePacket = usb_hid_packet_write,</div><div class="line">                                                               .abortDataPhase = usb_hid_packet_abort_data_phase,</div><div class="line">                                                               .finalize = usb_hid_packet_finalize,</div><div class="line">                                                               .getMaxPacketSize = usb_hid_packet_get_max_packet_size,</div><div class="line">                                                               .byteReceivedCallback = 0 }</div></div><!-- fragment -->
<p>Packet interface for the USB HID peripheral driver. </p>

</div>
</div>
<a class="anchor" id="ga76d246378c2796d71c91266aa710c6e8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool isEnumerated</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Whether the device has enumerated and is configured. </p>

</div>
</div>
<a class="anchor" id="ga90fff11d77e1f4428d91f9520aef1eaf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool isReceiveDataRequestRequired</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Whether an interrupt out pipe receive data request is required. </p>

</div>
</div>
<a class="anchor" id="ga9ddb8756e8240a3dc45a3ff82705448f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rtos__irq__sync.html#gaf19667353d40403b33dfac84ba8a3678">sync_object_t</a> receiveSync</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sync object used for reading packets. </p>

</div>
</div>
<a class="anchor" id="gab4b110c7ed6296be526d344757f5b6fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structbl__hid__report__t.html">bl_hid_report_t</a> report</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>the report plus the header, as the host can send up to the max report size bytes. </p>
<p>Buffer used to hold HID reports for sending and receiving. </p>

</div>
</div>
<a class="anchor" id="ga0e3d112a693957fb2a6c40cf246237f5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t reportSize</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The size in bytes of a received report. May be greater than the packet contained within </p>

</div>
</div>
<a class="anchor" id="ga192f980c686204e2b82709247c63c2e7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rtos__irq__sync.html#gaf19667353d40403b33dfac84ba8a3678">sync_object_t</a> sendSync</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sync object used for sending packets. </p>

</div>
</div>
<a class="anchor" id="ga89436f5a952a1cfbdc54b5f09639021f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const IRQn_Type usb_irq_ids[USB_INSTANCE_COUNT]</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"><span class="preprocessor">#if BL_HAS_MULTI_CORE</span></div><div class="line">    NVIC0_USB0_IRQn,</div><div class="line"><span class="preprocessor">#else</span></div><div class="line">    USB0_IRQn,</div><div class="line"><span class="preprocessor">#endif </span></div><div class="line"><span class="preprocessor">}</span></div></div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Mon Mar 7 2016 16:48:23 for Kinetis Bootloader by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
